/**
 * @author W
 * @date 2020/4/13 22:42
 */
// 命名空间作用:隔离作用域，主要是兼容旧系统全局变量
// 特点:利用闭包的原理，创建了一个立即执行函数，可以在多个文件使用同一个命名空间
// 用法
// 1.在全局环境下使用
// 2.在需要引用其他变量时，而引入其他文件时，利用///加相对路径  /// <reference path="Validation.ts" />
// 3.重命名命名空间变量  import 变量=命名空间.变量  不要与用来加载模块的 import x = require('name')语法弄混了

/// <reference path="a.ts" />
/// <reference path="b.ts" />

import x = Square.f; // 这里的语法是为指定的符号创建一个别名。你可以用这种方法为任意标识符创建别名，也包括导入的模块中的对象。

//  在 index.html 中引入编译后的js文件可以看效果
Square.f()
Square.f1()
x()

// 不应该对模块使用命名空间，使用命名空间是为了提供逻辑分组和避免命名冲突。 也不应该对使用了命名空间的用import导入。因为使用命名空间暴露出来的变量是一个全局变量，可以直接使用
// 模块文件本身已经是一个逻辑分组，并且它的名字是由导入这个模块的代码指定，所以没有必要为导出的对象增加额外的模块层。


